package com.coszero.utils.app

import android.text.TextUtils
import com.coszero.utils.utils.LogX
import com.coszero.utils.utils.StringUtils
import com.google.gson.Gson

/**
 * Desc:App中的异常检查
 *
 *
 *
 * @author xmqian
 * Email:xmqian93@163.com
 * Date: 2019/5/17
 * @version 1
 */
object AppCheckUtils {
    /**
     * 检查List是否为空
     */
    fun <V> isEmptyLs(list: List<V>?): Boolean {
        return null == list || list.size <= 0
    }

    /**
     * 判断 json 对象是否为空对象
     * 对象里整型字段必须用 transient 修饰符
     *
     * @param obj
     * @return
     */
    fun isJsonObjectEmpty(obj: Any?): Boolean {
        if (null == obj) {
            return true
        }
        val gson = Gson()
        var json = gson.toJson(obj)
        try {
            json = obj.toString()
        } catch (e: Exception) {
            e.printStackTrace()
        }
        LogX.d("##检查JSON对象", "json = $json")
        return TextUtils.equals(json, "{}")
    }

    /**
     * 列表安全检查，为空返回空列表
     *
     * @param list
     * @return
     */
    fun <T : Comparable<T>?> checkList(list: List<T>): List<*> {
        if (isEmptyLs(list)) {
            return ArrayList<Any?>()
        }
        return list
    }

    /**
     * 对象空安全检查
     *
     * @param object
     * @return 空为 false
     */
    fun checkObject(`object`: Any?): Boolean {
        if (isJsonObjectEmpty(`object`)) {
            return false
        }
        return true
    }

    /**
     * 检查可能为int值得字符串类型
     *
     * @param id
     * @return 返回为0，方式转换int值时报错
     */
    fun checkIntStr(id: String): String {
        if (StringUtils.isEmpty(id)) {
            return "0"
        }
        return id
    }

    /**
     * 字符串空安全检查
     *
     * @param str
     * @return
     */
    @JvmStatic
    fun checkString(str: String): String {
        if (StringUtils.isEmpty(str)) {
            return ""
        }
        return str
    }
}
